package lc.weekly;

import java.util.List;

/**
 * 第 290 场周赛
 * 本场竞赛由「华为 & 力扣」联合主办
 * <p>
 * https://leetcode-cn.com/contest/weekly-contest-290
 */
public interface WeeklyContest290 {

    /**
     * 2248. 多个数组求交集
     * <p>
     * <p>
     * 给你一个二维整数数组 nums ，其中 nums[i] 是由 不同 正整数组成的一个非空数组，按 升序排列 返回一个数组，数组中的每个元素在 nums所有数组 中都出现过。
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= nums.length <= 1000</li>
     *     <li>1 <= sum(nums[i].length) <= 1000</li>
     *     <li>1 <= nums[i][j] <= 1000</li>
     *     <li>nums[i] 中的所有值 互不相同</li>
     * </ul>
     *
     * @param nums
     * @return
     */
    List<Integer> intersection(int[][] nums);

    /**
     * 2249. 统计圆内格点数目
     * <p>
     * <p>
     * 给你一个二维整数数组 circles ，其中 circles[i] = [x<sub>i</sub>, y<sub>i</sub>, r<sub>i</sub>] 表示网格上圆心为 (x<sub>i</sub>, y<sub>i</sub>) 且半径为 r<sub>i</sub> 的第 i 个圆，返回出现在 至少一个 圆内的 格点数目 。
     * <p>
     * 注意：
     * <ul>
     *     <li><b>格点</b> 是指整数坐标对应的点。</li>
     *     <li><b>圆周上的点</b> 也被视为出现在圆内的点。</li>
     * </ul>
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= circles.length <= 200</li>
     *     <li>circles[i].length == 3</li>
     *     <li>1 <= x<sub>i</sub>, y<sub>i</sub> <= 100</li>
     *     <li>1 <= r<sub>i</sub> <= min(x<sub>i</sub>, y<sub>i</sub>)</li>
     * </ul>
     *
     * @return
     */
    int countLatticePoints(int[][] circles);

    /**
     * 6043. 统计包含每个点的矩形数目
     * <p>
     * <p>
     * 给你一个二维整数数组rectangles，其中rectangles[i] = [li, hi]表示第i个矩形长为li高为hi。给你一个二维整数数组points，其中points[j] = [xj, yj]是坐标为(xj, yj)的一个点。
     * <p>
     * 第i个矩形的 左下角在(0, 0)处，右上角在(li, hi)。
     * <p>
     * 请你返回一个整数数组count，长度为points.length，其中count[j]是 包含 第j个点的矩形数目。
     * <p>
     * 如果0 <= xj <= li 且0 <= yj <= hi，那么我们说第i个矩形包含第j个点。如果一个点刚好在矩形的 边上，这个点也被视为被矩形包含。
     * <p>
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= rectangles.length, points.length <= 5 * 10<sup>4</sup></li>
     *     <li>rectangles[i].length == points[j].length == 2</li>
     *     <li>1 <= li, xj <= 10<sup>9</sup></li>
     *     <li>1 <= hi, yj <= 100</li>
     *     <li>所有rectangles互不相同。</li>
     *     <li>所有points 互不相同。</li>
     * </ul>
     *
     * @param rectangles
     * @param points
     * @return
     */
    int[] countRectangles(int[][] rectangles, int[][] points);

    /**
     * 2251. 花期内花的数目
     * <p>
     * <p>
     * 给你一个下标从 0开始的二维整数数组flowers，其中flowers[i] = [start<sub>i</sub>, end<sub>i</sub>]表示第i朵花的 花期从start<sub>i</sub>到end<sub>i</sub>（都 包含）。同时给你一个下标从 0开始大小为 n的整数数组persons，persons[i]是第i个人来看花的时间。
     * <p>
     * 请你返回一个大小为 n的整数数组answer，其中answer[i]是第i个人到达时在花期内花的数目。
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= flowers.length <= 5 * 10<sup>4</sup></li>
     *     <li>flowers[i].length == 2</li>
     *     <li>1 <= start<sub>i</sub> <= end<sub>i</sub> <= 10<sup>9</sup></li>
     *     <li>1 <= persons.length <= 5 * 10<sup>4</sup></li>
     *     <li>1 <= persons[i] <= 10<sup>9</sup></li>
     * </ul>
     *
     * @param flowers
     * @param persons
     * @return
     */
    int[] fullBloomFlowers(int[][] flowers, int[] persons);
}
